/*
 * @(#)Relationship.java	1.0 08/01/07
 *
 * Copyright 2007 Fabio Gasparetti. All rights reserved.
 */

package org.tabularium.text.nlp.wordnet;

/**
 * Represents WordNet relationships among synsets.
 *  
 * @author Fabio Gasparetti
 * @version 1.0, 08/01/07
 */
public class Relationship {
	/**
	 * ANTONYM: A pair of words between which there is an associative bond
	 * resulting from their frequent co-occurrence. In adjective clusters ,
	 * direct antonyms appears only in head synsets.
	 * 
	 * Semantic category: Adj.
	 */
	public static final int ANTONYM = 0;

	/**
	 * HYPERNYM: The word A is a hypernym of word B if A's meaning encompasses
	 * the meaning of B, that is, if B is a kind of A, e.g., plant is hypernymic
	 * to flower.
	 * 
	 * Semantic category: Noun.
	 */
	public static final int HYPERNYM = 1;

	/** HYPERNYM_INSTANCE */
	public static final int HYPERNYM_INSTANCE = 2;

	/**
	 * HYPONYM: hyponym is a word or phrase whose semantic range is included
	 * within that of another word, e.g., scarlet, vermilion, carmine, and
	 * crimson are all hyponyms of red (their hypernym).
	 * 
	 * Semantic category: Noun.
	 */
	public static final int HYPONYM = 3;

	/** HYPONYM_INSTANCE */
	public static final int HYPONYM_INSTANCE = 4;

	/** HOLONYM_MEMBER */
	public static final int HOLONYM_MEMBER = 5;

	/** HOLONYM_SUBSTANCE */
	public static final int HOLONYM_SUBSTANCE = 6;

	/**
	 * HOLONYM_PART: The name of the whole of which the meronym names a part. Y
	 * is a holonym of X if X is a part of Y.
	 * 
	 * Semantic category: Noun.
	 */
	public static final int HOLONYM_PART = 7;

	/**
	 * MERONYM_MEMBER: he name of a constituent part of, the substance of, or a
	 * member of something. X is a meronym of Y if X is a part of Y .
	 * 
	 * Semantic category: Noun.
	 */
	public static final int MERONYM_MEMBER = 8;

	/** MERONYM_SUBSTANCE */
	public static final int MERONYM_SUBSTANCE = 9;

	/** MERONYM_PART */
	public static final int MERONYM_PART = 10;

	/** ATTRIBUTE */
	public static final int ATTRIBUTE = 11;

	/** DERIVED */
	public static final int DERIVED = 12;

	/** TOPIC */
	public static final int TOPIC = 13;

	/** TOPIC_MEMBER */
	public static final int TOPIC_MEMBER = 14;

	/** REGION */
	public static final int REGION = 15;

	/** REGION_MEMBER */
	public static final int REGION_MEMBER = 16;

	/** USAGE */
	public static final int USAGE = 17;

	/** USAGE_MEMBER */
	public static final int USAGE_MEMBER = 18;

	/**
	 * ENTAILMENT: see TROPONYMY.
	 * 
	 * Semantic category: Verb.
	 */
	public static final int ENTAILMENT = 19;

	/**
	 * TROPONYMY: >stroll< is a troponym of >walk<, which is to say that
	 * strolling is a manner of walking. Entailment relations between verbs are
	 * also coded in WordNet.
	 * 
	 * Semantic category: Verb.
	 */
	public static final int TROPONYMY = 26;

	/** CAUSE */
	public static final int CAUSE = 20;

	/** ALSO_SEE */
	public static final int ALSO_SEE = 21;

	/** VERB_GROUP */
	public static final int VERB_GROUP = 22;

	/** SIMILAR_TO */
	public static final int SIMILAR_TO = 23;

	/** PARTICIPLE */
	public static final int PARTICIPLE = 24;

	/** PERTAINYM */
	public static final int PERTAINYM = 25;

	static public String toString(int relationship) {
		switch (relationship) {
		case Relationship.ALSO_SEE:
			return "ALSO_SEE";
		case Relationship.ANTONYM:
			return "ANTONYM";
		case Relationship.ATTRIBUTE:
			return "ATTRIBUTE";
		case Relationship.CAUSE:
			return "CAUSE";
		case Relationship.DERIVED:
			return "DERIVED";
		case Relationship.ENTAILMENT:
			return "ENTAILMENT";
		case Relationship.HOLONYM_MEMBER:
			return "HOLONYM_MEMBER";
		case Relationship.HOLONYM_PART:
			return "HOLONYM_PART";
		case Relationship.HOLONYM_SUBSTANCE:
			return "HOLONYM_SUBSTANCE";
		case Relationship.HYPERNYM:
			return "HYPERNYM";
		case Relationship.HYPERNYM_INSTANCE:
			return "HYPERNYM_INSTANCE";
		case Relationship.HYPONYM:
			return "HYPONYM";
		case Relationship.HYPONYM_INSTANCE:
			return "HYPONYM_INSTANCE";
		case Relationship.MERONYM_MEMBER:
			return "MERONYM_MEMBER";
		case Relationship.MERONYM_PART:
			return "MERONYM_PART";
		case Relationship.MERONYM_SUBSTANCE:
			return "MERONYM_SUBSTANCE";
		case Relationship.PARTICIPLE:
			return "PARTICIPLE";
		case Relationship.PERTAINYM:
			return "PERTAINYM";
		case Relationship.REGION:
			return "REGION";
		case Relationship.REGION_MEMBER:
			return "REGION_MEMBER";
		case Relationship.SIMILAR_TO:
			return "SIMILAR_TO";
		case Relationship.TOPIC:
			return "TOPIC";
		case Relationship.TOPIC_MEMBER:
			return "TOPIC_MEMBER";
		case Relationship.USAGE:
			return "USAGE";
		case Relationship.USAGE_MEMBER:
			return "USAGE_MEMBER";
		case Relationship.VERB_GROUP:
			return "VERB_GROUP";
		case Relationship.TROPONYMY:
			return "TROPONYMY";
		default:
			return "N/A";
		}
	}
	
}
